<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title></title>
	</head>

	<body>
		<script>
			//1.定义函数有几种方式
			/*
			 * 第一,function fun1([参数]){代码块}
			 * 第二,var fun2=function([参数]){代码块}
			 * 第三,var fun3=function fun4([参数]){代码块};
			 * 第四,var fun5=new Function();
			 */

			//2.retrun关键字的意义
			/*
			 * retrun;            中断函数进行
			 * retrun x;          中断函数进行,并且返回x
			 */

			//3.函数是否可以重定义，会有什么事情发生
			/*
			 * 不能重定义,后面会覆盖前面
			 */

			//4.var和function关键字有什么特别功能？
			/*
			 * 变量提前声明
			 */

			//5.如何理解变量的作用域？
			/*
			 * 变量声明时,没有被{}所包围就是全局变量,如果被{}包围,{}范围就是变量的作用域
			 */

			//6.请定义一个函数，该函数功能为，传入一个值，返回这个值的平方值（就是这个值相乘的结果）
			function fun6(x) {
				if(isNaN(parseFloat(x))) {
					alert("请输入数字");
				} else {
					alert(x + "的平方值为:" + x * x);
					//					alert(x + "的平方值为:" + Math.pow(x, 2));
				}
			}
			fun6(10);

			//7.请写出一个函数，功能为：传入三个值，则返回这三个值最大的那个值
			function fun7(x, y, z) {
				if(isNaN(parseFloat(x)) || isNaN(parseFloat(y)) || isNaN(parseFloat(z))) {
					alert("请输入数字");
				} else {
					var max = x;
					y > max ? max = y : "";
					z > max ? max = z : "";
					alert("最大值为:" + max)
				}
			}
			fun7(3, 2, 1)

			//8.请写出一个函数，功能为：传入二个值,分别是x和y，返回x的y次方结果
			function fun8(x, y) {
				if(isNaN(parseFloat(x)) || isNaN(parseFloat(y))) {
					alert("请输入数字");
				} else {
					var res = 1;
					for(var i = 0; i < y; i++) {
						res *= x;
					}
					alert(x + "的" + y + "次方为:" + res);
					//					alert(x + "的"+y+"次方为:" + Math.pow(x, y));
				}
			}
			fun8(2, 4);

			//9.请定义一个函数，输入一个N值，则计算出该值的阶乘，即：n! = 1*2*3*4*5*6*...*N
			function fun9(x) {
				if(x == 1) {
					return 1;
				}
				return fun9(x-1) * x;
			}
			alert(fun9(5));

			//10.模拟一个长按事件(提示，用定时器实现)
			//提示
			/* div.addEventListener("mousedown",function(){
				alert("鼠标左键点下去触发")
			})
			div.addEventListener("mouseup",function(){ 
				alert("鼠标左键弹上来时触发")
			})
			*/
			function addEventLongTag(dom, callback) {
				var t;
				dom.addEventListener("mousedown", function() {
					t = setTimeout(callback, 300);
				})
				dom.addEventListener("mouseup", function() {
					clearTimeout(t);
				})
			}
			var div = document.querySelector(".div");
			addEventLongTag(div, function() {
				//				alert("触发长按");
			});

			//11.模拟一个双击事件(提示，用定时器实现)
			function addEventDoubleClick(dom, callback) {
				var isOn = false;
				dom.addEventListener("mousedown", function() {
					if(isOn) {
						callback();
						clearTimeout(t2);
						isOn = false;
					} else {
						isOn = true;
						var t2 = setTimeout(function() {
							isOn = false;
						}, 300)
					}
				});
			}
			var div2 = document.querySelector(".div");
			addEventDoubleClick(div2, function() {
				alert("双击成功");
			});

			//12.实现一个任意时间的倒计时。（提高题）
			//提示，获取当前的时间戳    (new Date()).getTime()

			function daojishi(targetTime) {
				var date = new Date();
				var curTime = date.getTime() / 1000;
				var daojiTime = targetTime - curTime;
				var day, hour, min, second;
				if(daojiTime <= 0) {
					day = hour = min = second = 0;
				} else {
					day = parseInt(daojiTime / 86400);
					hour = parseInt(daojiTime % 86400 / 3600);
					min = parseInt(daojiTime % 86400 % 3600 / 60);
					second = parseInt(daojiTime % 86400 % 3600 % 60);
				}
				document.body.innerHTML = "";
				document.write(day + "天" + hour + "时" + min + "分" + second + "秒");
				setTimeout(function() {
					daojishi(targetTime);
				}, 1000)
			}

			daojishi(Date.parse("2017-6-1 0:0:0") / 1000);
		</script>
	</body>

</html>